﻿// code04080001.cpp : 位运算符
// 位运算符的妙用

#include <iostream>

int main()
{
    //把全班30个学生的成绩状态用1、0表示，每一位的次序对应学号
    unsigned long quizl = 0;
    //录入
    //学号27通过测试，则用 00000100 0[24] 与quizl进行位或，将第27位的1录入quizl中
    //为什么用位或?因为无论quizl什么状态，位或1一定是1
    quizl |= 1UL << 27;
    //学号27通过测试，则用 11111011 1[24] 与quizl进行位与，将第27位的0录入quizl中
    //为什么要先求反再位与?因为无论quizl什么状态，位与0一定是0
    quizl &= ~(1UL << 27);

    //检验
    //检验学号27是否通过测试，用 00000100 0[24] 与quizl进行位与，再转为bool值进行判断
    //为什么要位与？因为无论quizl其它位什么状态，位与后一定是0，第27位的状态可以直接决定bool值
    bool status = quizl & (1UL << 27);
}


